﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using t_205_verk_hopur_12.Models;
using t_205_verk_hopur_12.Helpers;
using System.Web.Routing;

namespace t_205_verk_hopur_12.Models
{
    [HandleError]
    public class HomeController : Controller
    {
        public IChannelRepository channelRepo { get; set; }

        public ITool toolkit { get; set; }

        protected override void Initialize(RequestContext requestContext)
        {
            if (toolkit == null) { toolkit = new Tool(); }
            if (channelRepo == null) { channelRepo = new ChannelRepository(); }

            base.Initialize(requestContext);
        }

        public ActionResult Index()
        {
            User currentUser = toolkit.GetCurrentUser();
            IQueryable<Channel> top4Channels = channelRepo.GetTop4Channels();
            IQueryable<Channel> yourTop4Channels = null;
            IQueryable<Channel> top4SubscribedChannels = null;

            if (currentUser != null)
            {
                yourTop4Channels = channelRepo.GetTop4ChannelsYouOwn(currentUser.ID);
                top4SubscribedChannels = channelRepo.GetTop4SubscribedChannels(currentUser.ID);
            }

            return View(new IndexViewModel(top4Channels, yourTop4Channels, top4SubscribedChannels));
        }

        public ActionResult About()
        {
            return View();
        }

        // Showing static page for Mitt.tv tutorial
        public ActionResult Tutorial()
        {
            ViewData["Tutorial"] = "<h2>Velkominn á mitt.tv.</h2>" +

            "<p>Hér getur þú skoðað þær sjónvarpsstöðvar sem eru í boði, horft á efni innan þeirrar stöðvar og skoðað dagskrána.</p>" +
            "<p>&nbsp;</p>" +
            "<p>Hlutverk notanda er mismunandi og skiptist í 4 meginhlutverk, óskráður notandi, skráður notandi, starfsmaður stöðva og sjónvarpsstjóri. Hér getur þú fræðst örlítið um hvað þessi hlutverk snúast.</p>" +
            "<p>&nbsp;</p>" +
            "<p><b>Óskráður notandi:</b><br />Óskráði notandinn er hinn almenni notandi síðunnar. Hann getur horft á efni innan sjónvarpsstöðva og séð dagskrá.</p> " +
            "<p>&nbsp;</p>" +
            "<p><b>Skráður notandi:</b><br />Hefur öll sömu réttindi og hinn almenni notandi en við bætist að hann getur nú gefið stöðvum og þáttum einkunnir, hann getur sótt um að fá starfs sem dagskrárgerðarmaður stöðvar og síðast en ekki síst þá getur hann búið til sína eigin sjónvarpsstöð.</p>" +
            "<p>&nbsp;</p>" +
            "<p><b>Starfsmaður stöðva:</b><br />Starfsmaður á stöð er í raun dagskrárgerðarmaður stöðvarinnar, hann hefur öll réttindi skráðs notanda en við bætist að þegar sjónvarpsstjóri samþykkir umsókn skráðs notanda þá er hann orðinn starfsmaður á stöðinni. Sem starfsmaður þá getur hann tekið þátt í kosningum,  ef stöðin er lýðræðisstöð, raðað myndböndum á dagskrá og sent inn myndbönd sem þá annaðhvort fara í kosningu, ef stöðin er lýðræðisstöð, eða bíða samþykki sjónvarpsstjóra, ef stöðin er einræðisstöð.</p>" +
            "<p>&nbsp;</p>" +
            "<p><b>Stöðvarstjóri:</b><br />Þegar skráður notandi býr til stöð og skráir hana, þá verður hann  eigandi stöðvarinnar eða stöðvarstjóri. Sem stöðvarstjóri þá hefur hann full réttindi innan sinnar eiginn stöðvar og getur stjórnað henni eftir hentugleikum. Stöðvarstjóri getur ráðið starfsmann sér til aðstoðar og einnig rekið starfsmann sem er ekki standa sig, hann getur búið til tilkynningar sem koma fram á aðalsíðu stöðvar og síðast en ekki síst þá getur hann breytt öllum upplýsingum um stöðina.</p>" +
            "<p>&nbsp;</p>" +
            "<p><b>Stjórnsýsla stöðva:</b><br />Þegar notandi býr til nýja stöð þá getur hann valið hvort stöðin á að vera einræði eða lýðræði, lýðræðisstöð virkar þannig að allt efni sem á að fara á dagskrá verður að fara í gegnum kosninu þar sem eigandi og starfsmenn stöðvar get valið hvort vilja að efni verði birt á stöðinni eða ekki.  Á einræðisstöðvum þá er þessi valmöguleiki ekki til staðar og eigandi tekur einhliða ákvörðun um hvaða efni á að birtast og hvað ekki.</p>";

            return View(ViewData["Tutorial"]);
        }
    }
}
